#ifndef POSITION_KEEPER_H
#define POSITION_KEEPER_H

#include <map>
#include <iostream>

using namespace std;

class PlayerCharacter;
namespace talisman_map { class Space; };

class PositionKeeper
{
public:
	PositionKeeper();

	inline void placeCharacter(PlayerCharacter * iPlayerCharacter, talisman_map::Space * iSpace) { mPositions[iPlayerCharacter] = iSpace; };
	inline talisman_map::Space * getCharacterLocation(PlayerCharacter * iPlayerCharacter) {return mPositions[iPlayerCharacter]; }
	virtual talisman_map::Space * advanceCharacter(PlayerCharacter * iCharacter, unsigned int iNumberOfSpaces);
	virtual talisman_map::Space * movebackCharacter(PlayerCharacter * iCharacter, unsigned int iNumberOfSpaces);
	virtual talisman_map::Space * takeTheBridge(PlayerCharacter * iCharacter);
	virtual talisman_map::Space * useThePortal(PlayerCharacter * iCharacter);

private:
	map< PlayerCharacter *, talisman_map::Space * > mPositions;
};

#endif